public IList <ProcParam <SequenceProcEnv> > GetParameters()
        {
            var cond    = new SingleSelectParameter("Condition", new[] { "Greatest", "Least", "First Not Empty" });
            var operand = new SequenceMultiSelectParameter("Other Candidates", (v) => v.Type != SequenceType.Label);

            return(new ProcParam <SequenceProcEnv>[] { cond, operand });
        }
        public IList <ProcParam <SequenceProcEnv> > GetParameters()
        {
            var arith   = new SingleSelectParameter("Operation", new[] { "Add", "Subtract", "Multiply", "Divide", "Max", "Min" });
            var operand = new SequenceMultiSelectParameter("Other operands", (v) => v.Type != SequenceType.Label);

            return(new ProcParam <SequenceProcEnv>[] { arith, operand });
        }
        public SequenceData Operate(IList <ProcParam <SequenceProcEnv> > args, SequenceProcEnv env)
        {
            SequenceMultiSelectParameter others    = args[0] as SequenceMultiSelectParameter;
            List <TimeSeriesValues>      sequences = new List <TimeSeriesValues>();

            sequences.Add(env.SelectedSequence.Values);
            sequences.AddRange(others.Value.Select(d => d.Values));
            List <string> columnNames   = new List <string>();
            int           sequenceIndex = 0;

            foreach (TimeSeriesValues sequence in sequences)
            {
                sequenceIndex++;
                foreach (string name in sequence.ColumnNames)
                {
                    columnNames.Add(string.Format("{0}.{1}", sequenceIndex, name));
                }
            }
            TimeSeriesValues values = new TimeSeriesValues(columnNames);

            foreach (var pair in TimeSeriesValuesCalculation.EnumerateCompositeSequences(sequences))
            {
                values[pair.Key] = pair.Value;
            }
            return(new SequenceData(values, null, PathEx.GiveName("Composite", new string[] { env.SelectedSequence.Title }.Union(others.Value.Select(d => d.Title)))));
        }
        public IList <ProcParam <SequenceProcEnv> > GetParameters()
        {
            var operand = new SequenceMultiSelectParameter("Other operands", (v) => v.Type != SequenceType.Numeric);
            var sep     = new StringParameter("Separator");

            sep.Value = "+";
            var useEmpty = new BooleanParameter("Use Empty Label");

            return(new ProcParam <SequenceProcEnv>[] { operand, sep, useEmpty });
        }
        public IList <ProcParam <SequenceProcEnv> > GetParameters()
        {
            var row = new SequenceMultiSelectParameter("Sequence for Target Label", x => x.Type != SequenceType.Numeric);
            var sep = new StringParameter("Separator");

            sep.Value = "+";
            var multi    = new BooleanParameter("Allow Multi-Label per one row");
            var useEmpty = new BooleanParameter("Use Empty Label");

            return(new ProcParam <SequenceProcEnv>[] { row, sep, multi, useEmpty });
        }
        public IList <ProcParam <SequenceProcEnv> > GetParameters()
        {
            SequenceMultiSelectParameter others = new SequenceMultiSelectParameter("Other Sequences", v => (v.Type & SequenceType.Numeric) != 0);

            return(new ProcParam <SequenceProcEnv>[] { others });
        }