Acceder

Ver la Versión Completa : [ IDEA ] Crear aplicacion que da sugerencias de cocina


Mx WaR HaBiB
28/03/17, 02:26:32
Buenas tardes

Pues después de tanto estar en el foro me he animado a realizar un pequeño proyecto el cual consiste en lo siguiente: mi esposa diariamente me pregunta que podría hacer de cocinar a lo cual me tomo unos minutos en pensar que se me antoja y asi darle una sugerencia por lo cual me dio la idea :pensando: , ¿si le hago una aplicación con AppFactory apoyada con tareas en tasker y escenas para que le de sugerencias?

mi vida se resolvería para ahorrar unos minutos :sisi1: y a la vez para practicar mas sobre tasker :silbando:

pues el dia de hoy he terminado, claro no me vayan a criticar por los ejemplos que tengo de comida puesto que es lo primero que se me vino a la mente X-D.

hasta aquí funciona si se les ocurre hacer una sugerencia de como ven el proyecto les agradezco.

Saludos! :aplausos:

PD. adjunto Proyecto y APK en formato .rar

PD2. Gracias a todos por apoyarme en terminar este proyecto :gracias:

mlesir
28/03/17, 08:58:09
Mx el primer fallo es que tienes que usar "exportar como descripción". El código que has puesto es ininteligible.
Además lo que puedes hacer si quieres es exportar el archivo APK,o incluso el proyecto (para instalar en taller} y asi que la gente la instale si quiere y la pruebe

Enviado desde mi YD201 mediante Tapatalk

WillyWeb
28/03/17, 14:18:22
Muy buenas :D

Para exportar la descripción de la tarea que te comenta mlesir sigue estas instrucciones...

http://www.htcmania.com/showthread.php?t=615896 (el sistema nº 1)

Sobre tu proyecto...

Lo primero es que no te pienso perdonar el hambre canica que me ha dado ver los nombres de los platos :crybaby:

Y precisamente ver los nombres de los platos directamente en la tarea me ha dado la idea de que, tal vez, sería mejor ponerlos en un archivo de texto, a modo de base de datos, y leerlo desde la tarea. De esa forma podrías añadir nuevos platos a la lista de sugerencias sin tener que modificar la tarea/aplicación.

El archivo podría ser algo tan simple como esto (viendo lo que has puesto tú)...

d|Sopa C/Huevo
d|Filete Empanizado
d|Huevos Rancheros
d|Carne Frita
w|Ceviche
w|Pollo Estofado
w|Carne Asada

Nota: La "d" o la "w" indicarían si es un plato de diario o de fin de semana.

O podría complicarse todo lo que tú quisieras indicando si el plato es para comida, cena, postre, primero, segundo, etc.

La tarea tendría que leer ese archivo y dependiendo de su selección (diario/fin de semana/comida/cena/etc.) mostrarte los platos (líneas del archivo) que coincidan con lo que buscas.

Cuando pongas la descripción de cada parte del proyecto lo mismo se me ocurre algo más. :silbando:

Rsc
28/03/17, 16:16:18
Me siento identificado con ese dilema diario de Que vamos a comer mañana?... Por lo tanto siento la obligación de aportar algo a este proyecto :sisi1:

Respecto a lo que comenta WillyWeb:


Y precisamente ver los nombres de los platos directamente en la tarea me ha dado la idea de que, tal vez, sería mejor ponerlos en un archivo de texto, a modo de base de datos, y leerlo desde la tarea. De esa forma podrías añadir nuevos platos a la lista de sugerencias sin tener que modificar la tarea/aplicación.:

Creo que la idea es buena, y si que es cierto, que para incorporar datos, podría ser más cómodo un archivo de texto (No siempre), pero si vas a incluir muchos platos, lo vas a desglosar en diarios, festivos, comidas cenas etc, creo que sería mejor crear una base de datos SQLite en vez de un archivo de texto, ya que para ordenar, filtrar, obtener datos etc lo veo mucho más eficaz. Un saludo

Mx WaR HaBiB
28/03/17, 18:15:13
El código que has puesto es ininteligible.

Gracias por tu comentario estimado, tu tema ya lo corregi. :ok:

sería mejor ponerlos en un archivo de texto

crear una base de datos SQLite

Sobre esto, lo había pensado pero siendo sincero no doy como hacer lo que mencionan, puesto que aun he visto el ejemplo de este tema: http://www.htcmania.com/showthread.php?p=8335103 y en el apartado de Editar texto y botón guardar no me queda claro, aunado que lo de base de datos SQlite eso como no veo ejemplo se me hace mas difícil :cry: pero por aprender me gustaría como hacerlo de alguna de estas maneras si me dan ejemplos de algún otro tema y pregunto estaría perfecto(de hecho ahora mismo estoy aun en un tema que me compartió WillyWeb que aun no termino pero estoy aprendiendo mucho).

Pd. Algunas ideas que se me ocurrieron y también a ustedes, son:

1.- En el tiempo que le doy de dilación (5 Seg) para abrir la escena donde la respuesta aleatoria agregar un sonido de "ruleta" esto dirigido con un archivo .mp3 que estara en mi memoria SD y reproducirla. lo que no se se es si cuando exporte el APK ¿Este sonido se adjuntara?

2.-Tener un botón para abrir otra escena para ver que es lo que mas se ha comido como un historial, puesto que el botón regresar es para cuando no este de acuerdo en comer lo que dio el resultado random y regresa apara que le salga otra y cuando le da "Ok, esta bien" guarde el registro para luego mostrarlo en la tabla mencionada (claro esto aun esta fuera de mi imaginación como se haría, pero si me apoyan y mi empeño podremos hacerlo ;) )

3.-O podría complicarse todo lo que tú quisieras indicando si el plato es para comida, cena, postre, primero, segundo, etc.

La tarea tendría que leer ese archivo y dependiendo de su selección (diario/fin de semana/comida/cena/etc.) mostrarte los platos (líneas del archivo) que coincidan con lo que buscas.

Esto si que no lo había pensado, :pensando: pero creo que es excelente, pero como buen principiante me gustaría emplearlo aunque primero me gustaría que funcione con la base de datos mencionada anteriormente. y si aun tienen tiempo y disposición llevar este tema al siguiente paso.

Sin mas muchas gracias por el tiempo que se toman en leerme.

un abrazo fuerte y saludos! X-D

WillyWeb
28/03/17, 19:26:36
Gracias por tu comentario estimado, tu tema ya lo corregi. :ok:

Pues no del todo. Has puesto la APK y el XML. Lo más cómodo para todos es que pongas la descripción de la tarea para que la podamos leer directamente aquí sin tener que importar nada en nuestro Tasker ni tener que ejecutar un APK en nuestro dispositivo. Lee detenidamente lo que pone en el método 1 del enlace que te puse antes.

Sobre esto, lo había pensado pero siendo sincero no doy como hacer lo que mencionan...[/I]

Si tu proyecto usa una base de datos la mejor opción es usar SQL, como te dice Rsc, pero yo no te lo he propuesto para no complicarte la vida. Eso ya llegará. ;-)

[QUOTE=Mx WaR HaBiB;26044127]1.- ... no se se es si cuando exporte el APK ¿Este sonido se adjuntara?

Me temo que no. Existen formas de hacerlo, pero nuevamente te complicaría la vida. Copia el archivo MP3 a mano y no te enredes ahora con eso.

2.-Tener un botón para abrir otra escena para ver que es lo que mas se ha comido...

Para eso tendrías que guardar en alguna parte tu selección y una base de datos SQL sería una buena forma de hacerlo, aunque como ya te he comentado yo de momento evitaría ese sistema. Si te quieres soltar con Tasker usa sólo sus acciones y un simple archivo de texto. No será la mejor forma de hacerlo, pero será con la que más aprendas sobre Tasker. ;-)

Necesitarás manejar con soltura un par de acciones relacionadas con los archivos de texto: "Leer archivo" y "Escribir archivo".

Y también unas acciones para manejar variables: "Separar variable", "Concatenar variable" y puede que "Buscar y Reemplazar...".

Juega un poco con esas acciones hasta que entiendas su funcionamiento. Y recuerda que la ayuda, y la guía de usuario, son tus amigas. :silbando:

Mx WaR HaBiB
28/03/17, 19:44:44
Lee detenidamente lo que pone en el método 1 del enlace que te puse antes

una disculpa ya esta corregido.

Necesitarás manejar con soltura un par de acciones relacionadas con los archivos de texto: "Leer archivo" y "Escribir archivo".

Y también unas acciones para manejar variables: "Separar variable", "Concatenar variable" y puede que "Buscar y Reemplazar...".

sobre ello voy a revisarlo y a la vez me pondré a trabajar en esto para ver si puedo hacer algo parecido.

dare mis avances mas tarde, gracias por el tiempo! :ok:

Rsc
28/03/17, 22:42:33
En el momento que quiera incluir lo que se ha comentado sobre diferenciar entre comidas, cenas, diarios, festivos etc, creo que aún usando como base de datos un archivo txt, tendría que acabar recurriendo al comando grep, y creo que le puede llevar el mismo tiempo aprender a usar ese comando, que a manipular una base de datos SQLite.

No obstante, creo que de cualquiera de las dos formas, podrá conseguir que funcione perfectamente, y si el fin es aprender, además de solventar su dilema diario, controlar las acciones para trabajar con archivos de texto, y controlar los comandos que se vienen utilizando para obtener la parte del texto que convenga, creo que es muy útil y abre muchas puertas para otros proyectos.

De cualquiera de las dos formas que lo decidas hacer, intentaré echar un cable en lo que pueda, aunque yo tampoco es que controle demasiado. Un saludo.

WillyWeb
28/03/17, 22:56:29
...creo que aún usando como base de datos un archivo txt, tendría que acabar recurriendo al comando grep...

Para nada. Se puede hacerlo todo sólo con acciones de Tasker.

...si el fin es aprender, además de solventar su dilema diario, controlar las acciones para trabajar con archivos de texto, y controlar los comandos que se vienen utilizando para obtener la parte del texto que convenga, creo que es muy útil y abre muchas puertas para otros proyectos.

Ese el objetivo, aprender cosas que nos valgan para otros proyectos. Y toda ayuda es bien recibida. :ok:

fus
28/03/17, 23:03:33
Me siento identificado con ese dilema diario de Que vamos a comer mañana?... Por lo tanto siento la obligación de aportar algo a este proyecto :sisi1:

Respecto a lo que comenta WillyWeb:



Creo que la idea es buena, y si que es cierto, que para incorporar datos, podría ser más cómodo un archivo de texto (No siempre), pero si vas a incluir muchos platos, lo vas a desglosar en diarios, festivos, comidas cenas etc, creo que sería mejor crear una base de datos SQLite en vez de un archivo de texto, ya que para ordenar, filtrar, obtener datos etc lo veo mucho más eficaz. Un saludo

El problema es que tu aplicación necesitará sqlite para hacer las consultas, un archivo de texto plano (con formato XML o JSON) sería mucho mejor para guardar las recetas, ya que tasker tiene acceso a JS con el cual es muy sencillo acceder a dichos archivos, y manipular los datos.

WillyWeb
28/03/17, 23:10:38
... un archivo de texto plano (con formato XML o JSON) sería mucho mejor para guardar las recetas, ya que tasker tiene acceso a JS ...

Tampoco es mala idea, pero se puede hacer sin XML, ni JSON, ni JS ... sólo un TXT y acciones de Tasker. Un pequeño reto que puede resultar tan entretenido como instructivo. :silbando:

fus
28/03/17, 23:21:37
Tampoco es mala idea, pero se puede hacer sin XML, ni JSON, ni JS ... sólo un TXT y acciones de Tasker. Un pequeño reto que puede resultar tan entretenido como instructivo. :silbando:

Reto sí, pero instructivo a partir del duodécimo separar variable es poco :(

WillyWeb
28/03/17, 23:27:01
Reto sí, pero instructivo a partir del duodécimo separar variable es poco :(

Yo nunca uso esa técnica. :silbando:

Rsc
29/03/17, 00:21:54
El problema es que tu aplicación necesitará sqlite para hacer las consultas

Creo que desde la última actualización de Tasker, en la que se implemento la acción Sql query, ya no es necesario.

Mx WaR HaBiB
29/03/17, 01:54:13
intentaré echar un cable en lo que pueda, aunque yo tampoco es que controle demasiado. Un saludo.

se agradece, muchas gracias por el tiempo y es nuestro dilema no se te olvide ;-)

jajaja.

Un pequeño reto que puede resultar tan entretenido como instructivo.

En ese reto estoy ahora mismo... he avanzado un poco en crear la escena que hará el meter nuevas comidas... pero me falta lo mas importante las tareas que se ejecutaran... ya casi salgo del trabajo, avanzare un poco más y veré si en la noche de aquí de México cuelgo mi avance.

gracias por tus tips espero de la forma que estamos realizando el proyecto quede completa.

separar variable es poco

te agradezco el interés puesto que si me interesa aprender, esto de las "tareas" con el archivo .txt creo que ya lo voy dominando veré si en la noche rindo frutos y si después de esto me apoyan en realizar el mismo trabajo pero a base de SQlite como mencionan, lo hago para aprender. ;-)

gracias por tu tiempo :aplausos:

WillyWeb
29/03/17, 08:09:37
Creo que desde la última actualización de Tasker, en la que se implemento la acción Sql query, ya no es necesario.

Correcto. Ahora Tasker ya tiene lo necesario para tratar directamente con DB SQL.

Mx WaR HaBiB
29/03/17, 08:39:30
buenas noches por aqui. :sherlock: aquí en México

con el tema que llevamos en este post, doy mi adelanto



Tarea para mostrar la escena de prueba

MuestraD (73)
A1: Leer Archivo [ Archivo:Tasker/Diario.txt A la variable:%Tododiario ]
A2: Leer Archivo [ Archivo:Tasker/FinSemana.txt A la variable:%Todofinsemana ]
A3: Esperar [ MS:500 Segundos:0 Minutos:0 Horas:0 Días:0 ]
A4: Mostrar Escena [ Nombre:Menus4 Mostrar como:Diálogo con fondo oscurecido Posición Horizontal:100 Posición Vertical:100 Animación:Sistema Mostrar Botón Salida:Apagado Mostrar sobre bloqueo pantalla:Encendido Continuar tarea inmediatamente:Encendido ]

_____________________________

Escena para ingresar las nuevas comidas

Scene: Menus4
P:888x1424L:-1x-1

Orientación: Sistema
Color de segundo plano: #33000000
Estilo Barra Acciones: Sistema
Título: Menus4
Subtítulo:
Icono: null
Etiqueta Pestañas:

Element: Rectángulo1/Rectángulo
Geometry:
P:0,8 887x148 L:0,8 887x198
Content:
Sombreado: Ninguno
Color: #88489AFF
Color final:
Anchura Borde: 0
Color Borde: #FF000000
Radio de la esquina: 0
Esquinas redondeadas: Todo

Element: Texto1/Texto
Geometry:
P:0,0 887x156 L:74,0 740x328
Content:
Texto: Agrega Nuevas Comidas
Tamaño texto: 24
Anchura Texto Escala %: 100
Color Texto: #FFFFFFFF
Fuente:
Posición: Centro
Modo Ajuste Vertical: Ninguno
Formato Texto: Texto Plano

Element: EditarTexto1/EditarTexto
Geometry:
P:0,156 887x124 L:0,156 887x124
Content:
Texto:
Tamaño texto: 16
Anchura Texto Escala %: 100
Color Texto: #FFFFFFFF
Fuente:
Posición: Centro
Tipo de entrada: Texto Normal
Caracteres Máx.: 1000
Events:
ValueSelected: 79

Element: Rectángulo11/Rectángulo
Geometry:
P:0,427 887x99 L:0,8 887x198
Content:
Sombreado: Ninguno
Color: #88489AFF
Color final:
Anchura Borde: 0
Color Borde: #FF000000
Radio de la esquina: 0
Esquinas redondeadas: Todo

Element: T1hhggg/Texto
Geometry:
P:0,427 887x99 L:74,0 740x328
Content:
Texto: ¿A donde va?
Tamaño texto: 18
Anchura Texto Escala %: 100
Color Texto: #FFFFFFFF
Fuente:
Posición: Centro
Modo Ajuste Vertical: Ninguno
Formato Texto: Texto Plano

Element: Botón1/Botón
Geometry:
P:0,550 418x124 L:0,550 418x124
Content:
Etiqueta: Diario
Tamaño Etiqueta: 16
Anchura Etiqueta Escala %: 100
Color etiqueta: #FFFFFFFF
Fuente:
Posición: Centro
Icono: null
Events:
Click: 80

Element: Botón11/Botón
Geometry:
P:468,550 418x124 L:468,550 418x124
Content:
Etiqueta: Fin de Semana
Tamaño Etiqueta: 16
Anchura Etiqueta Escala %: 100
Color etiqueta: #FFFFFFFF
Fuente:
Posición: Centro
Icono: null
Events:
Click: 81

Element: Texto3/Texto
Geometry:
P:0,674 419x691 L:0,674 419x691
Content:
Texto: %Tododiario
Tamaño texto: 16
Anchura Texto Escala %: 100
Color Texto: #FFFFFFFF
Fuente:
Posición: Centro
Modo Ajuste Vertical: Ninguno
Formato Texto: Texto Plano
Events:
LongClick: 83

Element: Texto31/Texto
Geometry:
P:468,674 420x692 L:468,674 420x692
Content:
Texto: %Todofinsemana
Tamaño texto: 16
Anchura Texto Escala %: 100
Color Texto: #FFFFFFFF
Fuente:
Posición: Centro
Modo Ajuste Vertical: Ninguno
Formato Texto: Texto Plano
Events:
LongClick: 84

Element: Botón111/Botón
Geometry:
P:0,279 887x124 L:0,279 887x124
Content:
Etiqueta: Guardar
Tamaño Etiqueta: 16
Anchura Etiqueta Escala %: 100
Color etiqueta: #FFFFFFFF
Fuente:
Posición: Centro
Icono: null
Events:
Click: 82
LongClick: 72

Esto es un avance de la la escena que servirá para escribir y almacenar las comidas nuevas en dos archivos de textos "Diario.txt" & "FinSemana.txt" aquí se almacenara la información.

ahora viene la parte difícil que es volver esta información variable para poder así generar las comidas de manera random.. pero de eso me ocupare mañana... ahora voy a dormir... ahí con ustedes.

buenos días- :cucu:

Los leo en unas 8 Hrs, si puede darme algún tip por cierto adjunto la escena para que la aprecien mejor, no duden en comentarlo.

un abrazo y gracias por su atención.

WillyWeb
29/03/17, 11:27:07
En ese reto estoy ahora mismo... he avanzado un poco en crear la escena que hará el meter nuevas comidas...

Antes de hacerlo bonito deberías tener claro qué datos vas a manejar. Viendo lo que tenías puesto en el primer proyecto (y que ahora ya no veo por ninguna parte) supongo que quieres una lista de platos, marcar si un determinado plato es de diario o de fin de semana, y un contador de veces que has seleccionado cada plato ... ¿correcto?

Esos son los datos que deberías guardar en el archivo de texto que haga de base de datos (platos.txt por poner un ejemplo).

Cada línea del archivo contendrá los datos de un plato y los datos podrían tener esta estructura ... día|usos|nombre

"día" sería una letra "d" o "w" dependiendo de si es para diario o para fin de semana (weekend)
"usos" sería un número para contar las veces que has seleccionado el plato
"nombre" el texto que quieres que aparezca como nombre del plato

d|0|Sopa C/Huevo
d|0|Filete Empanizado
d|0|Huevos Rancheros
d|0|Carne Frita
w|0|Ceviche
w|0|Pollo Estofado
w|0|Carne Asada

Ese archivo inicial lo puedes generar fácilmente con Tasker usando la acción "Escribir archivo".

... pero me falta lo mas importante las tareas que se ejecutaran...

Una vez que tengas el archivo de datos creado lo primero que necesitarás es leerlo y convertirlo en un array que puedas manejar con acciones de Tasker ... ¿te ves capaz de hacerlo?

danko9696
29/03/17, 17:05:22
Lo que sugeriría sería intentar una prueba lo más sencilla posible con SQLITE y si no consigues que funcione entonces hacerlo con texto, porque con archivos de texto a pelo también se puede hacer pero a la larga, si vas a hacer modificaciones va a resultar más engorroso, sobre todo cosas como añadir más campos, ordenar por campos (veces que has usado una receta, por postres/comidas/cenas, fechas, ...). Si por ejemplo metes los ingredientes, poder hacer consultas de las comidas que no lleven pasta, o los postres que lleven chocolate pero no azucar glass, .... Ordenaciones y filtros (en una sola tabla) son supersencillos una vez has conseguido hacer la primera consulta de SQLITE.

Ahora bien, todo esto suponiendo que ya te defiendas en el manejo de texto, porque de no ser el caso sí es algo muy recomendable, ya que aunque aunque uses SQLITE algo de manejo de cadenas-arrays tendrás que hacer, solo que mucho menos.

Más cosas, si no te corre prisa yo empezaría a aprender Javascript, fíjate en la diferencia entre el Tap de Menus->Diaria hecho con tareas y con Javascript:


destroyScene("Menus");

wait(50);
var v_diario = Math.floor(Math.random()*5)+1;

if (v_diario==1)
{ v_diario = "Huevos Rancheros"; }
else if (v_diario==2)
{ v_diario = "Carne Frita"; }
else if (v_diario==3)
{ v_diario = "Omelette Huevo"; }
else if (v_diario==4)
{ v_diario = "Sopa C/Huevo"; }
else if (v_diario==5)
{ v_diario = "Filete Empanizado"; }

setGlobal("Diario",v_diario); // solo al final es cuando asigno valor a la variable global, el resto del rato siempre con variables locales

showScene("Menus2","OverBlocking",0,0,true,false);
Ahí está, hecho en PC, donde se puede ver de un vistazo mucho más fácilmente que desde tasker hecho en forma de acciones dentro de una tarea. Luego copiar todo el código y pegarlo (usando la app JOIN u otro sistema para compartir portapapeles PC<->ANDROID) en un scriptlet dentro de Menus->Diaria (después de deshabilitar todo lo demás para que no interfiera).

Puede hacer falta usar google para cosas como el Math.floor o la web de ayuda de Tasker para los parámetros exactos de showScene, pero en el PC es fácil googlear o tener a mano la ayuda de Tasker. Y en JS se ve muchísimo mejor en mi opinión, y más aún si lo vas a compartir o no eres tu el que lo ha hecho y estás viendo código de otra persona.

Otra cosa, veo que tienes código casi duplicado en Menus->Diaria->Tap y Menus->Diaria-Fin Semana, cuando lo lógico sería desde ambos sitios lanzar una tarea aparte pasando un parámetro para que en la nueva tarea sepas desde donde ha sido lanzada (diaria o finsemana) y gestionar todo en el mismo sitio. Esto va a facilitar la depuración, porque de primeras no necesitarás entrar en escenas->tap para hacer cambios en el código, en lugar de tener que cambiar el código en dos sitios sería solo en uno y porque dependiendo de como lo hagas puedes conseguir que el código para ambos diaria+finde te ocupe solo un poquito más que el código solo para diaria.

Mx WaR HaBiB
29/03/17, 18:42:52
Antes de hacerlo bonito deberías tener claro qué datos vas a manejar.

hola :cucu: estimado, buen día por estos lares

como mecnionas en lo que describi ayer me doy cuenta que no se aprecia las tareas que avance ayer si no, unicamente lo estetico por ende adjunto video demostrativo para que veas el "avance" X-D que llevo:

Link (https://www.youtube.com/watch?v=y_9FSu5LNbI)


el simobolo "|" antes del nombre de la comida lo tengo puesto debido a que imagino que mas adelante me tocara concatenar para realizar una variable con todos los datos y depues a base de ese simbolo la separare para tener en variables las comidas (al menos esa es mi idea) :risitas:.

Viendo lo que tenías puesto en el primer proyecto (y que ahora ya no veo por ninguna parte)

Lo que mencionas aun sigue ahí... pero quería enfocarme en las listas por eso solo copie la escena donde seria la lista. al final solo uniría las escenas (claro omitiendo por ahora las variables que había hecho a mano).

"usos" sería un número para contar las veces que has seleccionado el plato

Esto en si no se como seria el aplicarlo, ¿poner un contador? imagino que esto aplicaria cuando escojan en la otra tarea que habia hecho...

¿te ves capaz de hacerlo?

Es lo que intento, espero tus expectativas se cumplan con lo que describí en el vídeo.

Lo que sugeriría sería intentar una prueba lo más sencilla posible con SQLITE...

:oh: aun veo esto muy complicado... en tema de JavaScript estoy llevando un "mini curso" que el buen amigo WillyWeb me compartió. Pero aun no lo termino :cry: aun estoy muy verde por ahi.

aunque en cuanto lo termine y si decides apoyarme para hacerlo de esa manera con gusto lo vuelvo a hacer desde cero. :-)

veo que tienes código casi duplicado en Menus->Diaria->Tap y Menus->Diaria-Fin Semana, cuando lo lógico sería desde ambos sitios lanzar una tarea aparte pasando un parámetro para que en la nueva tarea sepas desde donde ha sido lanzada (diaria o finsemana) y gestionar todo en el mismo sitio.

si, puesto que son dos archivos los que ocupo, siento que tienes muchas razón al sugerir trabajar con un solo archivo :pensando:

talvez el dia de hoy lo haga de esa manera, muchas gracias por tu tiempo. :ok:

PD. en el vídeo si ven que dice "Pollo Empalizado" es por que es nueva receta que acabo de inventar :risitas:

Mx WaR HaBiB
30/03/17, 08:12:48
Buenas noches por estos lares :silbando:

reportan dome y a la vez actualizando el tema de hecho mi conocimiento ya no llega a más.

adjunto un vídeo que es mas demostrativo de como va la aplicación:


https://youtu.be/zPIOf0pNEp0



Tarea que llama la aplicación (Inicio)

MuestraC (69)
A1: Mostrar Escena [ Nombre:Menus Mostrar como:Capa Superpuesta, Bloqueada Posición Horizontal:0 Posición Vertical:7 Animación:Sistema Mostrar Botón Salida:Apagado Mostrar sobre bloqueo pantalla:Encendido Continuar tarea inmediatamente:Encendido ]

___________________________________________

Tarea necesaria para actualzar los contenido de las tablas mostradas en las escenas posteriores

MuestraD (88)
A1: Leer Archivo [ Archivo:Tasker/Diario.txt A la variable:%Tododiario ]
A2: Leer Archivo [ Archivo:Tasker/FinSemana.txt A la variable:%Todofinsemana ]
A3: Esperar [ MS:500 Segundos:0 Minutos:0 Horas:0 Días:0 ]
A4: Mostrar Escena [ Nombre:Menus4 Mostrar como:Diálogo con fondo oscurecido Posición Horizontal:100 Posición Vertical:100 Animación:Sistema Mostrar Botón Salida:Apagado Mostrar sobre bloqueo pantalla:Encendido Continuar tarea inmediatamente:Encendido ]

____________________________________________

Escenas demostradas en el video

Scene: Menus
P:616x296L:-1x-1

Orientación: Sistema
Color de segundo plano: #FF000000
Estilo Barra Acciones: Sistema
Título: Menus
Subtítulo:
Icono: null
Etiqueta Pestañas:

Element: Botón1/Botón
Geometry:
P:1,147 221x123 L:59,85 199x100
Content:
Etiqueta: Diaria
Tamaño Etiqueta: 13
Anchura Etiqueta Escala %: 100
Color etiqueta: #FFFFFFFF
Fuente:
Posición: Centro
Icono: null
Events:
Click: 71

Element: Botón11/Botón
Geometry:
P:246,147 199x123 L:282,85 199x100
Content:
Etiqueta: Fin Semana
Tamaño Etiqueta: 13
Anchura Etiqueta Escala %: 100
Color etiqueta: #FFFFFFFF
Fuente:
Posición: Centro
Icono: null
Events:
Click: 76

Element: Botón3/Botón
Geometry:
P:491,221 122x74 L:407,193 108x52
Content:
Etiqueta: Salir
Tamaño Etiqueta: 9
Anchura Etiqueta Escala %: 100
Color etiqueta: #FFFFFFFF
Fuente:
Posición: Centro
Icono: null
Events:
Click: 70

Element: Rectángulo1/Rectángulo
Geometry:
P:0,0 615x98 L:0,0 515x60
Content:
Sombreado: Ninguno
Color: #88489AFF
Color final:
Anchura Borde: 0
Color Borde: #FF000000
Radio de la esquina: 0
Esquinas redondeadas: Todo

Element: Texto1/Texto
Geometry:
P:0,0 613x98 L:0,0 515x60
Content:
Texto: Buen día, ¿nos toca Diario o Fin de semana?
Tamaño texto: 10
Anchura Texto Escala %: 100
Color Texto: #FFFFFFFF
Fuente:
Posición: Centro
Modo Ajuste Vertical: Ninguno
Formato Texto: Texto Plano

Element: Botón4/Botón
Geometry:
P:467,98 147x99 L:467,98 147x99
Content:
Etiqueta: Comidas
Tamaño Etiqueta: 8
Anchura Etiqueta Escala %: 100
Color etiqueta: #FFFFFFFF
Fuente:
Posición: Centro
Icono: null
Events:
Click: 86

__________________________________________

Scene: Menus2
P:616x296L:-1x-1

Orientación: Sistema
Color de segundo plano: #FF000000
Estilo Barra Acciones: Sistema
Título: Menus
Subtítulo:
Icono: null
Etiqueta Pestañas:

Element: Botón3/Botón
Geometry:
P:491,221 123x74 L:407,193 108x52
Content:
Etiqueta: Esta OK
Tamaño Etiqueta: 9
Anchura Etiqueta Escala %: 100
Color etiqueta: #FFFFFFFF
Fuente:
Posición: Centro
Icono: null
Events:
Click: 74

Element: Rectángulo1/Rectángulo
Geometry:
P:0,0 615x98 L:0,0 515x60
Content:
Sombreado: Ninguno
Color: #88489AFF
Color final:
Anchura Borde: 0
Color Borde: #FF000000
Radio de la esquina: 0
Esquinas redondeadas: Todo

Element: Texto1/Texto
Geometry:
P:0,0 613x98 L:0,0 515x60
Content:
Texto: Te parece:
Tamaño texto: 18
Anchura Texto Escala %: 100
Color Texto: #FFFFFFFF
Fuente:
Posición: Centro
Modo Ajuste Vertical: Ninguno
Formato Texto: Texto Plano

Element: Botón31/Botón
Geometry:
P:0,221 124x74 L:407,193 108x52
Content:
Etiqueta: atrás
Tamaño Etiqueta: 9
Anchura Etiqueta Escala %: 100
Color etiqueta: #FFFFFFFF
Fuente:
Posición: Centro
Icono: null
Events:
Click: 75

Element: Texto2/Texto
Geometry:
P:1,98 613x129 L:1,98 613x129
Content:
Texto: %Diario
Tamaño texto: 22
Anchura Texto Escala %: 100
Color Texto: #FFD7FF41
Fuente:
Posición: Centro
Modo Ajuste Vertical: Ninguno
Formato Texto: Texto Plano

_________________________________________

Scene: Menus3
P:616x296L:-1x-1

Orientación: Sistema
Color de segundo plano: #FF000000
Estilo Barra Acciones: Sistema
Título: Menus
Subtítulo:
Icono: null
Etiqueta Pestañas:

Element: Botón3/Botón
Geometry:
P:491,221 123x74 L:407,193 108x52
Content:
Etiqueta: Esta OK
Tamaño Etiqueta: 9
Anchura Etiqueta Escala %: 100
Color etiqueta: #FFFFFFFF
Fuente:
Posición: Centro
Icono: null
Events:
Click: 77

Element: Rectángulo1/Rectángulo
Geometry:
P:0,0 615x98 L:0,0 515x60
Content:
Sombreado: Ninguno
Color: #88489AFF
Color final:
Anchura Borde: 0
Color Borde: #FF000000
Radio de la esquina: 0
Esquinas redondeadas: Todo

Element: Texto1/Texto
Geometry:
P:1,0 614x98 L:0,0 515x60
Content:
Texto: Te parece:
Tamaño texto: 18
Anchura Texto Escala %: 100
Color Texto: #FFFFFFFF
Fuente:
Posición: Centro
Modo Ajuste Vertical: Ninguno
Formato Texto: Texto Plano

Element: Botón31/Botón
Geometry:
P:0,221 124x74 L:407,193 108x52
Content:
Etiqueta: atrás
Tamaño Etiqueta: 9
Anchura Etiqueta Escala %: 100
Color etiqueta: #FFFFFFFF
Fuente:
Posición: Centro
Icono: null
Events:
Click: 78

Element: Texto2/Texto
Geometry:
P:1,98 613x129 L:1,98 613x129
Content:
Texto: %Weekend
Tamaño texto: 22
Anchura Texto Escala %: 100
Color Texto: #FFD7FF41
Fuente:
Posición: Centro
Modo Ajuste Vertical: Ninguno
Formato Texto: Texto Plano

____________________________________________

Scene: Menus4
P:888x1424L:-1x-1

Orientación: Sistema
Color de segundo plano: #33000000
Estilo Barra Acciones: Sistema
Título: Menus4
Subtítulo:
Icono: null
Etiqueta Pestañas:

Element: Rectángulo1/Rectángulo
Geometry:
P:0,8 887x148 L:0,8 887x198
Content:
Sombreado: Ninguno
Color: #88489AFF
Color final:
Anchura Borde: 0
Color Borde: #FF000000
Radio de la esquina: 0
Esquinas redondeadas: Todo

Element: Texto1/Texto
Geometry:
P:172,0 715x156 L:74,0 740x328
Content:
Texto: Agrega Nuevas Comidas
Tamaño texto: 24
Anchura Texto Escala %: 100
Color Texto: #FFFFFFFF
Fuente:
Posición: Centro
Modo Ajuste Vertical: Ninguno
Formato Texto: Texto Plano

Element: EditarTexto1/EditarTexto
Geometry:
P:0,156 887x124 L:0,156 887x124
Content:
Texto:
Tamaño texto: 16
Anchura Texto Escala %: 100
Color Texto: #FFFFFFFF
Fuente:
Posición: Centro
Tipo de entrada: Texto Normal
Caracteres Máx.: 1000
Events:
ValueSelected: 79

Element: Rectángulo11/Rectángulo
Geometry:
P:0,427 887x99 L:0,8 887x198
Content:
Sombreado: Ninguno
Color: #88489AFF
Color final:
Anchura Borde: 0
Color Borde: #FF000000
Radio de la esquina: 0
Esquinas redondeadas: Todo

Element: T1hhggg/Texto
Geometry:
P:0,427 887x99 L:74,0 740x328
Content:
Texto: ¿A donde va?
Tamaño texto: 18
Anchura Texto Escala %: 100
Color Texto: #FFFFFFFF
Fuente:
Posición: Centro
Modo Ajuste Vertical: Ninguno
Formato Texto: Texto Plano

Element: Botón1/Botón
Geometry:
P:0,550 418x124 L:0,550 418x124
Content:
Etiqueta: Diario
Tamaño Etiqueta: 16
Anchura Etiqueta Escala %: 100
Color etiqueta: #FFFFFFFF
Fuente:
Posición: Centro
Icono: null
Events:
Click: 80

Element: Botón11/Botón
Geometry:
P:468,550 418x124 L:468,550 418x124
Content:
Etiqueta: Fin de Semana
Tamaño Etiqueta: 16
Anchura Etiqueta Escala %: 100
Color etiqueta: #FFFFFFFF
Fuente:
Posición: Centro
Icono: null
Events:
Click: 81

Element: Texto3/Texto
Geometry:
P:0,674 419x691 L:0,674 419x691
Content:
Texto: %Tododiario
Tamaño texto: 16
Anchura Texto Escala %: 100
Color Texto: #FFFFFFFF
Fuente:
Posición: Centro
Modo Ajuste Vertical: Ninguno
Formato Texto: Texto Plano
Events:
LongClick: 83

Element: Texto31/Texto
Geometry:
P:468,674 420x692 L:468,674 420x692
Content:
Texto: %Todofinsemana
Tamaño texto: 16
Anchura Texto Escala %: 100
Color Texto: #FFFFFFFF
Fuente:
Posición: Centro
Modo Ajuste Vertical: Ninguno
Formato Texto: Texto Plano
Events:
LongClick: 84

Element: Botón111/Botón
Geometry:
P:0,279 887x124 L:0,279 887x124
Content:
Etiqueta: Guardar
Tamaño Etiqueta: 16
Anchura Etiqueta Escala %: 100
Color etiqueta: #FFFFFFFF
Fuente:
Posición: Centro
Icono: null
Events:
Click: 82

Element: Botón4/Botón
Geometry:
P:0,0 172x156 L:0,8 172x156
Content:
Etiqueta: Atrás
Tamaño Etiqueta: 16
Anchura Etiqueta Escala %: 100
Color etiqueta: #FFFFFFFF
Fuente:
Posición: Centro
Icono: null
Events:
Click: 87

Como podran observar al momento de generar la comida aleatoria con el boton "Fin de Semana" me sale el nombre de una variable ya que esa variable no tiene un valor. esto es algo que no doy como solucionar.

al momento de que en el archivo agrego los nombre de los platos de comida no entiendo como "contar" las variables al momento que se separan y a así tome en cuenta la "Variable Aleatoria" solo los que tengan datos.

pd. agrego tanto APK, XML para importar, como descripcion en codigo para ver si me pueden hechar un cable con esto.

Saludos y gracias por su tiempo.

Rsc
30/03/17, 13:02:20
al momento de que en el archivo agrego los nombre de los platos de comida no entiendo como "contar" las variables al momento que se separan y a así tome en cuenta la "Variable Aleatoria" solo los que tengan datos.

Para saber en cuantas Array se divide una variable tienes que escribir la misma tal que así:

Variable(#)

Si %Cena contiene %Cena1, %Cena2 y %Cena3

%Cena(#) valdrá 3

WillyWeb
30/03/17, 14:25:01
En la descripción que has puesto sólo veo detalles de la escena, pero nada de la lógica de la tarea. Te cuento lo que he hecho por si te vale de algo...

Platos (666)
A1: Establecer variable [ Nombre:%diario A:Sopa C/Huevo,Filete Empanizado,Huevos Rancheros,Carne Frita ]
A2: Establecer variable [ Nombre:%finde A:Ceviche,Pollo Estofado,Carne Asada ]
A3: Escribir archivo [ Archivo:diario.txt Texto:%diario Añadir:Apagado Añadir Nueva Línea:Apagado ]
A4: Escribir archivo [ Archivo:finsemana.txt Texto:%finde Añadir:Apagado Añadir Nueva Línea:Apagado ]

Con esta tarea creas unos archivos de prueba con unos pocos platos. Uno para los de diario (diario.txt) y otro para los de fin de semana (finsemana.txt). El separador entre platos es la coma (,) ojo que luego se usa en A9 de la otra tarea, además es mejor que no lo cambies. Por defecto los archivos se crean en la raíz del almacenamiento interno (/sdcard).

Selección (777)
<MENÚ>
A1: Menú [ Disposición:IconAndTextMenu Cuenta atrás (segundos):Nunca Mostrar sobre bloqueo pantalla:Apagado Ítems:(3) ]
A2: Si (if) [ %tap_label ~ salir ]
A3: Detener [ Con error:Apagado Tarea: ]
A4: Else Si (if) [ %tap_label ~ diario ]
A5: Leer Archivo [ Archivo:diario.txt A la variable:%file ]
A6: Else Si (if) [ %tap_label ~ fin* ]
A7: Leer Archivo [ Archivo:finsemana.txt A la variable:%file ]
A8: Fin si (End if)
A9: Array Set [ Matriz de Variables (array):%platos Values:%file Separador:, ]
A10: Establecer variable [ Nombre:%numplatos A:%platos(#) Recurse Variables:Apagado Calcular:Apagado Añadir:Apagado ]
<RANDOM>
A11: Variable aleatoria [ Nombre:%rand Mín:1 Máx:%numplatos ]
A12: Establecer variable [ Nombre:%plato A:%platos(%rand) Recurse Variables:Apagado Calcular:Apagado Añadir:Apagado ]
A13: Menú [ Título:%plato Disposición:IconAndTextMenu Cuenta atrás (segundos):Nunca Mostrar sobre bloqueo pantalla:Apagado Ítems:(4) ]
A14: Si (if) [ %tap_label ~ salir ]
A15: Detener [ Con error:Apagado Tarea: ]
A16: Else Si (if) [ %tap_label ~ vale ]
A17: Pop-Up [ Título:Buen provecho Texto:%plato Disposición:Popup Cuenta atrás (segundos):5 Mostrar sobre bloqueo pantalla:Apagado ]
A18: Else Si (if) [ %tap_label ~ otro ]
A19: Ir a acción [ Tipo:Etiqueta Acción Etiqueta:RANDOM ]
A20: Else Si (if) [ %tap_label ~ menú ]
A21: Ir a acción [ Tipo:Etiqueta Acción Etiqueta:MENÚ ]
A22: Fin si (End if)

Con esta tarea seleccionas el plato de forma aleatoria. Los ítems de las acciones A1 y A13 (las acciones de "Menú") son los siguientes:

A1: Diario, Fin semana, Salir
A13: Vale, Otro, Menú, Salir

Sólo tienes que poner las etiquetas dejando las acciones en blanco. Eso sí, respeta los nombres para que coincidan con los IF del resto de la tarea.

Mx WaR HaBiB
30/03/17, 17:55:33
Para saber en cuantas Array se divide una variable tienes que escribir la misma tal que así:

Variable(#)

buenos días

aqui me he dado cuenta que si ¡funciona!, el unico detalle es en las condiciones para realizar los (if), transcribiré la tarea mas adelante para que veas mas claro mi problema, de antemano gracias por el tiempo.

sólo veo detalles de la escena, pero nada de la lógica de la tarea

Ese es una de las cosas que veo que no puedo describir con la opción de "exportar" tengo que entrar a cada escena y transcribir la tarea que ejecuta cada cosa...

me haré a la tarea de transcribir para que veas la tarea lógica.

gracias por tu tiempo.

WillyWeb
30/03/17, 18:01:08
aqui me he dado cuenta que si funciona!, el unico detalle es que no funciona si lo quiero agregar a la tarea "Variable Aleatoria" ya que solo me acepta numeros o una variable unicamente...

Mira las acciones A10 y A11 de la tarea de selección.

Ese es una de las cosas que veo que no puedo describir con la opción de "exportar" tengo que entrar a cada escena y transcribir la tarea que ejecuta cada cosa...

Ya lo suponía, y no es necesario de que te des todo ese trabajo. Si lo necesito lo puedo ver cargando tu proyecto en mi Tasker.

Mx WaR HaBiB
03/04/17, 18:00:21
A7: Leer Archivo [ Archivo:finsemana.txt A la variable:%file ]
A8: Fin si (End if)
A9: Array Set [ Matriz de Variables (array):%platos Values:%file Separador:, ]
A10: Establecer variable [ Nombre:%numplatos A:%platos(#) Recurse Variables:Apagado Calcular:Apagado Añadir:Apagado ]
<RANDOM>
A11: Variable aleatoria [ Nombre:%rand Mín:1 Máx:%numplatos ]
A12: Establecer variable [ Nombre:%plato A:%platos(%rand) Recurse Variables:Apagado Calcular:Apagado Añadir:Apagado ]

Estimado, buen día

disculpen la tardanza en dar señales de vida... andaba de :fiesta3:

Mi querido Willy, con tu pedazo de idea resolviste (la mía no estaba tan lejos pero no estaba completa) mi problema sin tanto esfuerzo... la aplicación podría quedar ahí puesto que hace lo que necesitamos, pero aun no la comparto puesto que creo que se puede pulir más, estoy pensando :pensando: lo que habíamos contemplado al antes.

una tabla con los platos mas usados.

veré si hoy por la noche empiezo a ver como construirla, la idea es: un botón en la escena donde se agregan comidas, ahí tener una nueva escena donde muestre de mayor a menor los platos mas usados en "Diario y FinSemana" aunque creo que se tendrán que crear 2 archivos mas para llevar la cuenta de los platos que se han aprobado.

El problema es que tu aplicación necesitará sqlite para hacer las consultas

Creo que desde la última actualización de Tasker, en la que se implemento la acción Sql query, ya no es necesario.

ahora mismo estoy contemplando que estas opciones antes mencionadas me resolverían mas rápido lo que tengo que hace para las consultas... pero buscare la manera como dices WillyWeb sin usarlo (que ni se como usarlo aún X-D)

luego los molesto por aquí.

¡Saludos y gracias por sus tiempo!

WillyWeb
03/04/17, 18:10:04
... estoy pensando :pensando: lo que habíamos contemplado al antes.

una tabla con los platos mas usados.

veré si hoy por la noche empiezo a ver como construirla, la idea es: un botón en la escena donde se agregan comidas, ahí tener una nueva escena donde muestre de mayor a menor los platos mas usados en "Diario y FinSemana" aunque creo que se tendrán que crear 2 archivos mas para llevar la cuenta de los platos que se han aprobado.

No son necesarios más archivos, te lo aseguro. La tarea que puse antes es una versión "simplificada" de la que hice y que lleva la cuenta de los platos seleccionados. :silbando:

Mx WaR HaBiB
03/04/17, 18:30:21
Selección (777)
<MENÚ>
A1: Menú [ Disposición:IconAndTextMenu Cuenta atrás (segundos):...

que lleva la cuenta de los platos seleccionados.

Disculpa, pero no lo gro apreciar donde lleve la cuenta estimado.

lo que veo es que si puede decir por la variable cuantos platos diferentes hay.

pero mi idea es que diga si 6 veces se eligio "Sopa C/Huevo" y 2 de "Omellete" que arriba de la lista vaya Sopa y luego Omellete, esto imagino que lo haré con la suma de variables por cada vez que le den a "Vale" en tu simplificación.

si estoy mal, favor de corregir me. :-)

Gracias por tu tiempo y observaciones!

WillyWeb
03/04/17, 18:46:33
Disculpa, pero no lo gro apreciar donde lleve la cuenta estimado.

Es que en la tarea que he puesto he quitado esa parte. ¿No pretenderás que te lo haga yo todo? :sisi1:

pero mi idea es que diga si 6 veces se eligio "Sopa C/Huevo" y 2 de "Omellete" que arriba de la lista vaya Sopa y luego Omellete, esto imagino que lo haré con la suma de variables por cada vez que le den a "Vale" en tu simplificación.

Yo te digo cosas y tú las conectas... :silbando:

Los datos necesarios los puedes guardar perfectamente en el mismo archivo que la lista de platos.

El contenido del archivo se carga en un array en memoria.

Tienes una acción de Tasker con la que puedes ordenar un array de varias formas.

:palomitas:

Mx WaR HaBiB
03/04/17, 19:06:51
Es que en la tarea que he puesto he quitado esa parte. ¿No pretenderás que te lo haga yo todo?

Nunca ha sido mi intención estimado, pero me pone triste que tu desde cuando tengas resulto mi dilema y yo llevo 1 semana con esto y aun me surgen dudas :cry:, por ejemplo si todo lo pongo en un archivo al momento de mostrar el resultado en la tabla donde se "guardan las comidas" también mostrara datos que que no quiero que salgan :pensando: aunque creo que si el archivo lo divido en variables, luego concateno las que quiero que muestre podría servir.

pero creo que es mas complicado. :risitas:

pero intentare y mostrare mi avance... gracias Willy.

Tienes una acción de Tasker con la que puedes ordenar un array de varias formas.

si, esta la he captado... te refieres a "Procesar Array" (aunque nunca la he utilizado).

Gracias.

WillyWeb
03/04/17, 19:41:21
En el post #18 ya te daba una pista de cómo hacerlo, y entonces te decía que se podía hacer todo con único archivo. Para no complicarte demasiado la vida lo hacemos con dos, pero que sepas que se puede hacer con uno perfectamente.

El contenido de cada archivo deberías ser tal que así:

n#plato,n#plato,n#plato...

"n" es el número de veces que has seleccionado cada plato. Al añadir un plato "n" debe ser "0".

Y con archivos de ese tipo:

-Primero cargas el archivo en memoria.

-Luego creas un array usando como separador la (,). Cada elemento de ese array contendrá una pareja n#plato.

-Ahora ordenas el array por número (ojo a este detalle).

-Con un número aleatorio seleccionas un plato cualquiera del array.

-Separas los datos de ese plato usando el símbolo (#).

Llegados a este punto, y suponiendo que has usado las variables de mi tarea del post #23, en %rand tienes el número de plato dentro del array, en %plato la pareja de datos de ese plato, en %plato(1) tienes el número de veces que lo has seleccionado y en %plato(2) su nombre.

Lo siguiente es que lo haga yo (que ya lo he hecho :rolleyes:).

Venga, añade lo que le falta a la tarea del post #23. :palomitas:

Mx WaR HaBiB
04/04/17, 06:52:59
"n" es el número de veces que has seleccionado cada plato.

Willy, me he desvelado como no tienes idea... y he de ser torpe puesto que no doy como guardar el conteo para cada plato.

Ejemplo:

me da como variable %Diario=Pollo, si le doy el botón "ok" no entiendo que tengo que hacer para que la tarea sepa que al valor "Pollo" quiero sumarle un plato se que la acción es Sumar Variable pero no se como aplicarla en lo que quiero... como se que %Diario va a cambiar el valor cuando escoja otro plato le sume a cada plato respectivamente. :cry:

me estoy volviendo loco con este problema :crazy:

se que casi todo lo has hecho TU con tus pistas muy acertadas, pero aquí me atoro muy feo :(

Gracias y saludos!

WillyWeb
04/04/17, 11:00:19
Willy, me he desvelado como no tienes idea... y he de ser torpe puesto que no doy como guardar el conteo para cada plato.

Vale. Vamos a ver qué tenemos y cómo sacarle provecho ...


<MENÚ>
Menú [ Disposición:IconAndTextMenu Cuenta atrás (segundos):Nunca Mostrar sobre bloqueo pantalla:Apagado Ítems: (3) ]
Si (if) [ %tap_label ~ salir ]
Detener [ Con error:Apagado Tarea: ]
Else Si (if) [ %tap_label ~ diario ]
Leer Archivo [ Archivo:diario.txt A la variable:%file ]
Else Si (if) [ %tap_label ~ fin* ]
Leer Archivo [ Archivo:finsemana.txt A la variable:%file ]
Fin si (End if)
Array Set [ Matriz de Variables (array):%platos Values:%file Separador:, ]
Establecer variable [ Nombre:%numplatos A:%platos(#) Recurse Variables:Apagado Calcular:Apagado Añadir:Apagado ]
<RANDOM>
Variable aleatoria [ Nombre:%rand Mín:1 Máx:%numplatos ]
Establecer variable [ Nombre:%plato A:%platos(%rand) Recurse Variables:Apagado Calcular:Apagado Añadir:Apagado ]


Hasta este punto creo que todo está claro. :rolleyes:

Ahora tienes que procesar la variable %plato para separar el número de veces que has seleccionado ese plato de su nombre. Esto debería funcionar ...


Array Set [ Matriz de Variables (array):%plato Values:%plato Separador:# ]


Ahora en %plato(1) tienes el número de usos y en %plato(2) el nombre del plato, y lo tienes que tener en cuenta cuando necesites usar esos datos...


Menú [ Título:%plato(2) Disposición:IconAndTextMenu Cuenta atrás (segundos):Nunca Mostrar sobre bloqueo pantalla:Apagado Ítems: (4) ]


Y si decides aceptar la "sugerencia" tienes que guardar tu selección ...


Si (if) [ %tap_label ~ salir ]
Detener [ Con error:Apagado Tarea: ]
Else Si (if) [ %tap_label ~ vale ]
--- AQUÍ HACEMOS UN AÑADIDO ---
Pop-Up [ Título:Buen provecho Texto:%plato Disposición:Popup Cuenta atrás (segundos):5 Mostrar sobre bloqueo pantalla:Apagado ]
Else Si (if) [ %tap_label ~ otro ]
Ir a acción [ Tipo:Etiqueta Acción Etiqueta:RANDOM ]
Else Si (if) [ %tap_label ~ menú ]
Ir a acción [ Tipo:Etiqueta Acción Etiqueta:MENÚ ]
Fin si (End if)


... lo que puedes hacer añadiendo esto en el punto que te he señalado ...


Sumar 1 a %plato(1)
Sustituir los datos del plato en el array de platos asignando este valor ... %platos(%rand)=%plato(1)#%plato(2)
Guardar el array en el archivo correspondiente con la acción ... Escribir archivo [ Archivo:%file Texto:%platos() Añadir:Apagado Añadir Nueva Línea:Apagado ]


Creo que eso debería funcionar :rolleyes:

Mx WaR HaBiB
04/04/17, 16:29:44
A:%platos(%rand)

buen día estimado, en el primer paso veo que funciona como mencionas, lo que no se es que hace esta operación.

primero pensé que multiplicaba... sustituir valores %Platos=Nombre de todos los platos ()=multiplicar y la variable %rand=es un valor aleatorio anteriormente dado.

seria ejemplo:

%Platos %rand
Pollo (pato)
Pato

aquí no entiendo la lógica de multiplicar un valor de texto por otro valor de texto... imagino que lo estoy interpretando mal.

¿podrías ampliarme el panorama?

disculpa por tanto preguntar, pero son cosas que no encuentro específicamente en los recopilatorios como funciona, gracias.

Saludos!

WillyWeb
04/04/17, 17:02:45
buen día estimado, en el primer paso veo que funciona como mencionas, lo que no se es que hace esta operación.

No veo a qué operación te refieres. :oh:

Supongo que es a esta...

%platos(%rand)=%plato(1)#%plato(2)

...y eso no es una multiplicación.

...aquí no entiendo la lógica de multiplicar un valor de texto por otro valor de texto... imagino que lo estoy interpretando mal.

Supongamos que %plato(1)=5 y %plato(2)=Huevos. El resultado de esa operación sería...

5#Huevos

Estás sumando valores de texto, no multiplicando variables. Se trata de crear una nueva línea con el número de usos del plato seleccionado, un separador (#) y el nombre del plato.

¿Lo ves más claro ahora?

Mx WaR HaBiB
04/04/17, 17:26:24
Establecer variable [ Nombre:%plato A:%platos(%rand) Recurse Variables:Apagado Calcular:Apagado Añadir:Apagado ]

me refiero a esta parte, estimado

donde dice A:%Platos(%rand)

%Platos: es la lista de platillo que se creo en el array
%rand: es el plato al azar que el eligió lo aleatorio.

entonces mi pregunta es por que: %Platos(%rand)----- aquí lo interpreto como una multiplicación.

Ejemplo:
5(3)=15

bueno aunque se que no estas para darme clases de matematicas e interpretacion se te agradece X-D

WillyWeb
04/04/17, 17:42:15
%Platos: es la lista de platillo que se creo en el array
%rand: es el plato al azar que el eligió lo aleatorio.

entonces mi pregunta es por que: %Platos(%rand)----- aquí lo interpreto como una multiplicación.

Pues tienes mucha imaginación :oh:

La forma de hacer referencia a un elemento de un array en casi todos los lenguajes de programación es escribiendo ... array(indice)

Si el array "lista" contiene estos valores 3,pera,21 ...

lista(1)=3
lista(2)=pera
lista(3)=21

En el caso que nos ocupa %rand es un número aleatorio que selecciona uno de los índices del array %platos. Al escribir %platos(%rand) estás sacando los datos (num#nombre) de ese plato.

Por cierto...

Veo que no paras de usar variables globales y este proyecto no lo requiere. La tarea se ejecutará más rápido y consumiendo menos recursos si usas variables locales.

Mx WaR HaBiB
04/04/17, 17:49:25
casi todos los lenguajes de programación es escribiendo ... array(indice)

X-D por lo que veo esta muy perdido con el tema... aun no termino el curso que me pasaste de lenguaje JavaScript :cry: y veo que eso es muy necesario. te agradezco por la aclaracion y avanzare sobre el tema.

Veo que no paras de usar variables globales y este proyecto no lo requiere

Tomo en cuanta tu comentario y los cambio... tratare de realizar un avance hoy en la noche.

gracias de nuevo.

Mx WaR HaBiB
06/04/17, 16:36:07
Sustituir los datos del plato en el array de platos asignando este valor ... %platos(%rand)=%plato(1)#%plato(2)

Hola, buenos días :-)

como no puedo terminar mi tarea por completo, estoy analizando la tuya como funciona y he aprendido muchas cosas.

esta tarea yo la interprete así:

A28: Buscar y Reemplazar Contenido de Variable [ Variable:%file Buscar:%platos(%rand) Ignorar Caso:Apagado Multilínea:Apagado Una sola coincidencia:Apagado Almacenar Coincidencias En: Reemplazar Coincidencias:Encendido Reemplazar Con:%plato(1)#%plato(2) ]

pero al momento de escribir en el archivo con la ultima tarea que pusiste:

A29: Escribir archivo [ Archivo:%file Texto:%platos() Añadir:Apagado Añadir Nueva Línea:Apagado ]

si ya tenemos lo que queremos en el valor de %file por que ponemos que escriba lo que esta en la variable %platos()? :pensando:

Saludos!

WillyWeb
06/04/17, 19:51:59
A28: Buscar y Reemplazar Contenido de Variable [ Variable:%file Buscar:%platos(%rand) Ignorar Caso:Apagado Multilínea:Apagado Una sola coincidencia:Apagado Almacenar Coincidencias En: Reemplazar Coincidencias:Encendido Reemplazar Con:%plato(1)#%plato(2) ]

Yo no he dicho nada de buscar y reemplazar :rolleyes:

La acción que tienes que usar es "Establecer variable" para hacer esa asignación que te proponía.

A29: Escribir archivo [ Archivo:%file Texto:%platos() Añadir:Apagado Añadir Nueva Línea:Apagado ]

si ya tenemos lo que queremos en el valor de %file por que ponemos que escriba lo que esta en la variable %platos()? :pensando:

Aquí me he dado cuenta que he cometido un error :facepalm:

Te propuse esta acción...

Escribir archivo [ Archivo:%file Texto:%platos() Añadir:Apagado Añadir Nueva Línea:Apagado ]

...contando con que %file contenía el nombre del archivo que habías cargado previamente (ese es el fallo), pero no es eso lo que contiene.

En mi planteamiento inicial la variable %file era igual al contenido del archivo de base de datos tal cual, sin procesar de ninguna forma, y ese %platos() era el mismo contenido convertido en una array.

El motivo para guardar el array %platos() y no la variable %file es fácil de ver .... lo que modificas cuando seleccionas un plato es es el array, no la variable.

Este planteamiento debería arreglar mi fallo anterior...


<MENÚ>
Menú [ Disposición:IconAndTextMenu Cuenta atrás (segundos):Nunca Mostrar sobre bloqueo pantalla:Apagado Ítems: (3) ]
Si (if) [ %tap_label ~ salir ]
Detener [ Con error:Apagado Tarea: ]
Else Si (if) [ %tap_label ~ diario ]
Establecer variable [ Nombre:%file A:diario.txt ]
Else Si (if) [ %tap_label ~ fin* ]
Establecer variable [ Nombre:%file A:finsemana.txt ]
Fin si (End if)
Leer Archivo [ Archivo:%file A la variable:%texto ]
Array Set [ Matriz de Variables (array):%platos Values:%texto Separador:, ]
Establecer variable [ Nombre:%numplatos A:%platos(#) ]
<RANDOM>
Variable aleatoria [ Nombre:%rand Mín:1 Máx:%numplatos ]
Establecer variable [ Nombre:%plato A:%platos(%rand) ]


He marcado en rojo los cambios y he procurado que sean mínimos con respecto a mi primer planteamiento.

Con esas pequeñas modificaciones todo lo que puese en el post #33 sigue siendo válido ... espero :oh:

Mx WaR HaBiB
06/04/17, 21:41:34
Con esas pequeñas modificaciones todo lo que puese en el post #33 sigue siendo válido ... espero

Todo funciona Willy, ahora tiene sentido como funciona X-D

ahora veré como implementarlo en mis tareas para terminar la App... manos a la obra... ha sido muy ilustrativo tu apoyo... aprendí que un array trabaja como en segundo plano... "Establecer Variable" para un valor que esta dentro del array y lo cambia en automático sin necesidad de "buscar y reemplazar".

Muchas gracias por tu valioso apoyo... creo con esta nueva información puedo terminar. si me surge algún inconveniente estaré molestando por aquí :ok:

Saludos y larga vida a WillyWeb y compañía :dios:

Mx WaR HaBiB
15/04/17, 04:44:52
creo con esta nueva información puedo terminar

buenas noches, como otra ocasiones... esto es mentira :cry:

después de mas de una semana de intentar finalizar la aplicación, nuevamente me encuentro con otro tope a mi conocimiento sobre tasker... :(

todas las escenas, guardar los nombres, crear los archivos, realizar las operaciones random... ya esta listo (gracias a WillyWeb) pero mi problema ahora es con el listado que "muestra" lo creado anteriormente.

explico...

al final de todo tengo un archivo con toda la información obtenida... el cual veremos como variable aquí.

%tel = 0#pato,6#pollo,3#sopa,1#pescado

el detalle que quiero que se muestre en lista en una escena de texto de forma ordenada de mayor a menor en una columna, siendo asi:

6#pollo
3#sopa
1#pescado
0#pato

se ve sencillo para muchos de ustedes, cierto? :rolleyes:

he investigado e intentado varias "soluciones" (bueno en mi cabeza así parecía).

*Use la variable y luego utilice "Set Array" después "Procesar Array" pensando que serviría, de la siguiente manera:


A1: Leer Archivo [ Archivo:Diario.txt A la variable:%tel ]
A2: Array Set [ Matriz de Variables (array):%pord Values:%tel Separador:, ]
A3: Procesar Array [ Matriz de Variables (array):%pord Tipo:Sort Numeric, Integer ]
A4: Flash [ Texto:%pord() Largo:Apagado ]


queda claro que en el Flash me muestra lo mismo que al leer el archivo. :enfadadisimo:

he intentado separa la variable de forma normal, pero no encuentro como ORDENAR la información.

la solución mas cercana que he encontrado es la de mi estimado cace0353:
aquí y se supone que es nivel basico :risitas: (http://www.htcmania.com/showthread.php?t=1152543)

pero el ocupa lenguaje JavaScript... del cual aún estoy aprendiendo a pasos pequeños por mi cuenta aunado me dijo mi estimado WillyWeb que para esta tarea "sencilla" no es necesario tal cosa.

pero no encuentro solución así que vengo nuevamente a pedirles me orienten con el tema...

me estoy volviendo loco :loco:

Pd. de antemano gracias a todo por leerme y por su valioso tiempo que me regalan. :gracias:

WillyWeb
15/04/17, 10:48:18
... queda claro que en el Flash me muestra lo mismo que al leer el archivo. :enfadadisimo: ...

Muy buenas :-)

Si te fijas bien verás que no es exactamente lo mismo. La lista original es esta...

0#pato,6#pollo,3#sopa,1#pescado

... y el flash muestra esto otro ...

0#pato,1#pescado,3#sopa,6#pollo

Los valores están ordenados numéricamente de menor a mayor.

Mx WaR HaBiB
15/04/17, 17:18:20
... y el flash muestra esto otro ...

Tienes toda la razón estimado, pero probé el Orden Alfabético, inverso y se ordena de mayor a menor. :)

gracias por mencionarlo.

ahora en %pord(1) tengo 6#pollo

pero como ordenarlos en lista? tengo que escribir en un archivo dato por dato... mi idea es...

A1: Leer Archivo [ Archivo:Lista.txt A la variable:%pord(1) Añadir: Encendido]
A2: Leer Archivo [ Archivo:Lista.txt A la variable:%pord(2) ]
A3: Leer Archivo [ Archivo:Lista.txt A la variable:%pord(3) ]
A4: Leer Archivo [ Archivo:Lista.txt A la variable:%pord(4) ]

un detalle es que creo otro archivo solo para ordenarlas... que creo que prescindible... pero no veo otra manera. :cry:

otro detalle es que no sabría como implementar cuantas veces tengo que hacer esta acción, de antemano se que tengo la variable %pord(#) que me diría cuantas partes dela lista hay.

pero no se como implementarla. :(

Gracias nuevamente... y saludos!

WillyWeb
15/04/17, 17:40:45
Tienes toda la razón estimado, pero probé el Orden Alfabético, inverso y se ordena de mayor a menor. :)

Ese tipo de ordenación no hace lo que pretendes, aunque te lo pueda parecer.

Si pruebas con esta lista...

0#pato,6#pollo,3#sopa,11#pescado

Verás que en orden alfabético inverso queda así...

6#pollo,3#sopa,11#pescado,0#pato ... :silbando:

Tienes que usar la ordenación numérica. Y luego la inviertes si quieres que quede de mayor a menor.

... pero como ordenarlos en lista? tengo que escribir en un archivo dato por dato...

Aquí me he perdido :oh:

No entiendo lo que pretendes hacer ni veo la necesidad de generar un nuevo archivo.

Si me lo aclaras seguro que damos con una solución. :rolleyes:

Mx WaR HaBiB
15/04/17, 17:56:56
Aquí me he perdido


Hola WillyWeb aqui lo que intento decir es que segun yo creo un archivo para guardar el orden del listado... al usar el orden numérico se ordena de menor a mayor...teniendo como ejemplo simplificado...

0#pato,3#sopa,6#pollo,11#pescado

luego esto quiero que lo muestre en una escena donde se muestre "texto".

de la siguiente manera:

11#pescado
6#pollo
3#sopa
0#pato

para realizar esta columna en una sola variable para mostrar en la escena de "texto" es lo que no logro hacer. :(

WillyWeb
15/04/17, 19:33:10
... luego esto quiero que lo muestre en una escena donde se muestre "texto" ...(

Ahora sí está claro :ok:


Lees el archivo en una variable (%tel)
Creas un array (%pord) usando como separador la coma (,)
Ordenas el array numéricamente (queda de menor a mayor)
Inviertes el array para que quede de mayor a menor [Procesar Array : Invertido]


En este punto tienes el array %pord ordenado como tú querías.

Esa lista se puede hacer de muchas formas, pero creo que a la que más partido le puedes sacar es a esta...


Establece %lista = LISTADO DE PLATOS
Inicia un bucle, variable = %plato, ítems = %pord()
Crea un array, array = %dato, valor = %plato, separador = #
Establece %lista = %lista [newline] %dato(1) ... %datos(2)
Fin del bucle


[newline] equivale a una nueva línea para que se vea así...

%lista
%dato(1) ... %datos(2)

Después del bucle tendrás en %lista lo que quieres, y ya te adelanto que el resultado no queda "bonito", aunque arreglarlo no es complicado. :silbando:

Mx WaR HaBiB
16/04/17, 20:39:34
Esa lista se puede hacer de muchas formas, pero creo que a la que más partido le puedes sacar es a esta...
Establece %lista = LISTADO DE PLATOS
Inicia un bucle, variable = %plato, ítems = %pord()
Crea un array, array = %dato, valor = %plato, separador = #
Establece %lista = %lista [newline] %dato(1) ... %datos(2)
Fin del bucle

[newline] equivale a una nueva línea para que se vea así...
%lista
%dato(1) ... %datos(2)

buen día

soy sincero es primera vez que trabajo con la accion crear bucle, creo que algo estoy haciendo mal.

traduzco lo que mencionaste a como lo entendí:

A6: Leer Archivo [ Archivo:Diario.txt A la variable:%tel ]
A1: Array Set [ Matriz de Variables (array):%pord Values:%tel Separador:, ]
A2: Procesar Array [ Matriz de Variables (array):%pord Tipo:Sort Numeric, Integer ]
A3: Procesar Array [ Matriz de Variables (array):%pord Tipo:Invertido ]
A4: Establecer variable [ Nombre:%lista A:%pord() Recurse Variables:Apagado Calcular:Apagado Añadir:Apagado ]
A5: Ir a acción [ Tipo:Inicio bucle Número:1 Etiqueta: ] Si (if) [ %Plato ~ %pord() ]
A6: Array Set [ Matriz de Variables (array):%dato Values:%Plato Separador:# ]
A7: Establecer variable [ Nombre:%lista A:%dato(1)...%dato(2) Recurse Variables:Apagado Calcular:Apagado Añadir:Apagado ]
A8: Flash [ Texto:%lista Largo:Apagado ] Solo lo use para validar que cambiaran los valores, pero no fue asi :(
A9: Ir a acción [ Tipo:Final bucle Número:1 Etiqueta: ]

se que obviamente estoy haciendo algo mal... favor de ilustrarme.

Saludos!" :ok:

WillyWeb
16/04/17, 21:10:21
soy sincero es primera vez que trabajo con la accion crear bucle, creo que algo estoy haciendo mal.

Perdona. :cry:

He dado por supuesto que sabías que Tasker tiene un par de acciones para crear un bucle...

For y End For

...ambas en la categoría "Tarea".

Sabiendo eso la tarea quedaría algo así...


Leer Archivo [ Archivo: Diario.txt A la variable:%tel ]
Array Set [ Matriz de Variables (array):%pord Values:%tel Separador:, ]
Procesar Array [ Matriz de Variables (array):%pord Tipo:Sort Numeric, Integer ]
Procesar Array [ Matriz de Variables (array):%pord Tipo:Invertido ]
Establecer variable [ Nombre:%lista A:LISTA DE PLATOS ]
For [ Variable:%plato Ítems:%pord() ]
Array Set [ Matriz de Variables (array):%dato Values:%plato Separador:# ]
Establecer variable [ Nombre:%dato(1) A:0%dato(1) ] Si (if) [ %dato(1) < 10 ]
Establecer variable [ Nombre:%lista A:%lista{newline}%dato(1) ... %dato(2) ]
End For
Flash [ Texto:%lista Largo:Encendido ]


La acción que he puesto en azul es para que el listado quede "bonito". Recuerda lo que te comenté anteriormente sobre ese {newline}. Y en este caso no parece necesario usar variables globales, como has hecho en A5/A6, así que la he cambiado por una local.

:palomitas:

Mx WaR HaBiB
26/07/17, 18:59:27
Después de 4 meses de testear la apk X-D

regreso a dejarles la aplicación terminada, agradecimientos completamente a todos los usuarios que me apoyaron de alguna manera en terminarla, en especial al estimado WillyWeb quien fue asertivo en todas sus opiniones sin él no hubiera terminado dicho proceso.

gracias :D :campeon:

Pd. la aplicación esta en el primer post ;-)